package com.linqi.freebie.http.ktorClientCio.response


import kotlinx.serialization.Serializable

/**
 * 标准API响应数据结构
 * @param T 数据类型
 * @property code 响应码（如 "00000" 表示成功）
 * @property msg 响应消息
 * @property data 实际数据
 * @property success 是否成功（可选字段，部分接口使用）
 */
@Serializable
data class XResult<T>(
    val code: String,
    val msg: String,
    val data: T?,
    val success: Boolean? = null,
    // 可选的其他通用字段
    val version: String? = null,
    val timestamp: String? = null,
    val sign: String? = null
) {
    /**
     * 判断请求是否成功
     * 逻辑：code为"00000"或success字段为true都视为成功
     */
    fun isSuccessful(): Boolean {
        return code == "00000" || success == true
    }

    companion object {
        // 常见成功码（可根据实际接口调整）
        const val SUCCESS_CODE = "00000"

        // 创建失败响应（用于测试或模拟）
        fun <T> createError(code: String, message: String): XResult<T> {
            return XResult(
                code = code,
                msg = message,
                data = null,
                success = false
            )
        }
    }
}